package net.ericaro.neojavagen.classes;

/**
 * <b>FormalParameter</b> ::= <{@link net .ericaro .neojavagen .classes .VariableModifiers VariableModifiers}>? <{@link net .ericaro .neojavagen .types .Type
 * Type}> "..."? <{@link net .ericaro .neojavagen .classes .VariableDeclaratorId VariableDeclaratorId}>
 * 
 * @author eric@ericaro.net
 */
public class FormalParameter extends net.ericaro.neojavagen.JavaPartComposition {
	private boolean TripleDot;

	private net.ericaro.neojavagen.types.Type type;

	private net.ericaro.neojavagen.classes.VariableDeclaratorId variableDeclaratorId;

	private net.ericaro.neojavagen.classes.VariableModifiers variableModifiers;

	public FormalParameter(net.ericaro.neojavagen.classes.VariableModifiers variableModifiers, net.ericaro.neojavagen.types.Type type, boolean TripleDot, net.ericaro.neojavagen.classes.VariableDeclaratorId variableDeclaratorId) {
		super();
		this.variableModifiers = variableModifiers;
		this.type = type;
		this.TripleDot = TripleDot;
		this.variableDeclaratorId = variableDeclaratorId;
	}

	public FormalParameter(net.ericaro.neojavagen.types.Type type, net.ericaro.neojavagen.classes.VariableDeclaratorId variableDeclaratorId) {
		this.variableModifiers = null;
		this.type = type;
		this.TripleDot = false;
		this.variableDeclaratorId = variableDeclaratorId;
	}

	public boolean getTripleDot() {
		return TripleDot;
	}

	public net.ericaro.neojavagen.types.Type getType() {
		return type;
	}

	public net.ericaro.neojavagen.classes.VariableDeclaratorId getVariableDeclaratorId() {
		return variableDeclaratorId;
	}

	public net.ericaro.neojavagen.classes.VariableModifiers getVariableModifiers() {
		return variableModifiers;
	}

	public void setTripleDot(boolean TripleDot) {
		this.TripleDot = TripleDot;
	}

	public void setType(net.ericaro.neojavagen.types.Type type) {
		this.type = type;
	}

	public void setVariableDeclaratorId(net.ericaro.neojavagen.classes.VariableDeclaratorId variableDeclaratorId) {
		this.variableDeclaratorId = variableDeclaratorId;
	}

	public void setVariableModifiers(net.ericaro.neojavagen.classes.VariableModifiers variableModifiers) {
		this.variableModifiers = variableModifiers;
	}

	@Override
	public java.lang.String toString() {
		return print(variableModifiers, type, TripleDot ? "..." : null, variableDeclaratorId);
	}
}
